package com.company.loganalyzer.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * 智能体响应结果DTO
 */
@Builder
@Data
@AllArgsConstructor
public class AgentResponse {
    private String query;
    private String sessionId;
    private List<String> selectedTools;
    private String reasoning;
    private Map<String, ToolResult> toolResults;
    private String summary;
    private String analysis;
    private List<String> recommendations;
    private LocalDateTime timestamp;
    private String status;

    // 构造函数
    public AgentResponse() {}

    public AgentResponse(String query, String summary, String analysis, 
                        List<String> recommendations, LocalDateTime timestamp, String status) {
        this.query = query;
        this.summary = summary;
        this.analysis = analysis;
        this.recommendations = recommendations;
        this.timestamp = timestamp;
        this.status = status;
    }

    // Getters and Setters
    public String getQuery() { return query; }
    public void setQuery(String query) { this.query = query; }

    public String getSessionId() { return sessionId; }
    public void setSessionId(String sessionId) { this.sessionId = sessionId; }

    public List<String> getSelectedTools() { return selectedTools; }
    public void setSelectedTools(List<String> selectedTools) { this.selectedTools = selectedTools; }

    public String getReasoning() { return reasoning; }
    public void setReasoning(String reasoning) { this.reasoning = reasoning; }

    public Map<String, ToolResult> getToolResults() { return toolResults; }
    public void setToolResults(Map<String, ToolResult> toolResults) { this.toolResults = toolResults; }

    public String getSummary() { return summary; }
    public void setSummary(String summary) { this.summary = summary; }

    public String getAnalysis() { return analysis; }
    public void setAnalysis(String analysis) { this.analysis = analysis; }

    public List<String> getRecommendations() { return recommendations; }
    public void setRecommendations(List<String> recommendations) { this.recommendations = recommendations; }

    public LocalDateTime getTimestamp() { return timestamp; }
    public void setTimestamp(LocalDateTime timestamp) { this.timestamp = timestamp; }

    public String getStatus() { return status; }
    public void setStatus(String status) { this.status = status; }
}